package gui

import java.awt.Color
import scala.collection.mutable.ArrayBuffer
import scala.swing.Component
import scala.swing.EditorPane
import scala.swing.TabbedPane
import lang.LOC

/**
 * Diese Klasse stellt die Oberklasse fuer die
 * angepassten TabbedPanes im Programm dar,
 * TabbedPaneClosable, TabbedPaneNormal.
 * 
 * Hier werden Funktionen zum Hinzufuegen und
 * Entfernen sowie zum ermitteln des aktiven Tabs
 * definiert.
 */

abstract class MyTabbedPane extends TabbedPane {
  
  var components = new ArrayBuffer[Component]()
  this.opaque = true
  background = Color.GRAY
  peer.setForeground(Color.BLUE)
  
  def getActiveComponent() : Component = components(peer.getTabCount()-1)
  
  def getComponent(i:Int) : Component = {
    if(i < 0 || i >= peer.getTabCount())
      throw new NoSuchElementException

    if(components.length > 0)
      return components(i)
    else
      return null
  }
  
  def getSelectedIndex() : Int = peer.getSelectedIndex
  
  def addTab(title:String, com:Component, icon:String = null)
  
  def removeTab(i:Int) = {
    components.remove(i)
    
    if (this.peer.getTabCount() == 1) {
      this.peer.remove(0)
      this.addTab(LOC.get("Startseite"), Layout.startuptab, "icon_16.png")
      this match {
        case t: TabbedPaneClosable => t.setSelectedIndex(0)
      }
    }
    else
      this.peer.remove(i)
  }
  
  def getSelectedTextArea() : EditorPane = {
    this.getActiveComponent match {
      case x:ScrollTextAreaPane => x.textarea
      case _ => null
    }
  }
  
}


 